package com.wgts.wgts;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.multidex.MultiDex;

import com.wgts.wgts.dagger.ComponentHolder;
import com.wgts.wgts.dagger.component.AppComponent;
import com.wgts.wgts.dagger.component.DaggerAppComponent;
import com.wgts.wgts.dagger.module.AppModule;
import com.wgts.wgts.mvp.view.activity.main.MoHuMainActivity;
import com.wgts.wgts.netmodle.AppOkHttpClient;
import com.wgts.wgts.netmodle.DownloadFile;
import com.wgts.wgts.netmodle.HttpResultSubscriber;
import com.wgts.wgts.netmodle.NetService;
import com.wgts.wgts.netmodle.NetWorkFactory;
import com.wgts.wgts.netmodle.resp.UserInfoEntity;
import com.wgts.wgts.react.ReactConstant;
import com.wgts.wgts.react.load.LoadUtil;
import com.wgts.wgts.thirdParty.DownLoadThrid;
import com.wgts.wgts.thirdParty.pay.PayBlock;
import com.wgts.wgts.thirdParty.pay.WxpayUtil;
import com.wgts.wgts.tools.AppInfor;
import com.wgts.wgts.tools.SharedpreferencesHelper;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;

import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

import cn.jpush.android.api.JPushInterface;
import ren.yale.android.retrofitcachelib.RetrofitCache;

public class MoHuApplication extends Application{

    private static MoHuApplication _instance = null;


    private SharedPreferences sharedPreferences;


    @Override
    public void onCreate(){
        super.onCreate();
        initCache();
        initDagger();
        DownLoadThrid.initDownload(this);
        _instance = this;
        sharedPreferences = getSharedPreferences("reactNativeVersion", MODE_PRIVATE);


        AppInfor.getInstance().init(this, SharedpreferencesHelper.getInstance().init(this));

        /*微信支付初始化*/
        PayBlock.getInstance().initWechatPay("wxcb90775c355a0e9f");
        WxpayUtil.init(this);
        //bugly 初始化
        Bugly.init(getApplicationContext(), "42ad5657be", false);
        Beta.canShowUpgradeActs.add(MoHuMainActivity.class);
        //极光推送初始化
        JPushInterface.init(this);
        JPushInterface.setDebugMode(true);
        //友盟分享初始化
        /**
         * 初始化common库
         * 参数1:上下文，必须的参数，不能为空
         * 参数2:友盟 app key，非必须参数，如果Manifest文件中已配置app key，该参数可以传空，则使用Manifest中配置的app key，否则该参数必须传入
         * 参数3:友盟 channel，非必须参数，如果Manifest文件中已配置channel，该参数可以传空，则使用Manifest中配置的channel，否则该参数必须传入，channel命名请详见channel渠道命名规范
         * 参数4:设备类型，必须参数，传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机；传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子；默认为手机
         * 参数5:Push推送业务的secret，需要集成Push功能时必须传入Push的secret，否则传空
         */
        //如果AndroidManifest.xml清单配置中没有设置appkey和channel，则可以在这里设置
        //        UMConfigure.init(this, "58edcfeb310c93091c000be2", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "1fe6a20054bcef865eeb0991ee84525b");
        UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE,"");
        UMShareAPI.get(this);
        Config.DEBUG = false;
        PlatformConfig.setWeixin("wxcb90775c355a0e9f", "c0cd7c1b52ad373935ffde5cde4872fa");
        PlatformConfig.setQQZone("1106710666", "D71MH7gh0mCU0FVX");
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad",
                "http://sns.whalecloud.com/sina2/callback");
    }

    public static MoHuApplication getInstance(){
        return _instance;
    }

    private void initCache(){
        RetrofitCache.getInstance()
                .init(this)
                .setDefaultTimeUnit(TimeUnit.DAYS)
                .setDefaultTime(3);
    }






    private void initDagger(){
        AppComponent appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
        ComponentHolder.getInstance().setAppComponent(appComponent);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

    /*private void initAppInfo(){
        AppInfor.getInstance().init(this);
    }

    private void initSharedpreferencesHelper(){
        SharedpreferencesHelper.getInstance().init(this);
    }*/




}
